﻿using System;
using System.Collections.Generic;
using System.Text;

namespace PCR.Logic
{
    using PCR.Base;

    /// <summary>
    /// Standard curve parameter
    /// </summary>
    internal class StdCurveParam : IStdCurveParam
    {
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="kVal">Standard curve K value</param>
        /// <param name="bVal">Standard curve B value</param>
        /// <param name="eVal">Standard curve E value</param>
        /// <param name="rVal">Standard curve R value</param>
        public StdCurveParam(double kVal, double bVal,
            double eVal, double rVal, double r2Val)
        {
            this._kVal = kVal;
            this._bVal = bVal;
            this._eVal = eVal;
            this._rVal = rVal;
            this._r2Val = r2Val;
        }
        
        /// <summary>
        /// Get the curve's k value
        /// Y = -klogX + b,(X : Cell count, Y : Cell CT)
        /// </summary>
        public double KVal
        {
            get { return this._kVal; }
        }
        double _kVal = 0.0;

        /// <summary>
        /// Get the curve's b value
        /// Y = -klogX + b,(X : Cell count, Y : Cell CT)
        /// </summary>
        public double BVal
        {
            get { return this._bVal; }
        }
        double _bVal = 0.0;

        /// <summary>
        /// Get the cell's exponent coefficient
        /// </summary>
        public double EVal
        {
            get { return this._eVal; }
        }
        double _eVal = 0.0;

        /// <summary>
        /// Get the cell's mean deviation 
        /// </summary>
        public double RVal
        {
            get { return this._rVal; }
        }
        double _rVal = 0.0;
        
        /// <summary>
        /// Get the cell's mean square deviation 
        /// </summary>
        public double R2Val 
        {
            get { return this._r2Val; }
        }
        double _r2Val = 0.0;
    }
}
